﻿$(document).ready(function () {

    //La pagina solo contiene un modulo
    var _PAGE = function () {
        this._ManPostulantes = null;


        this.InitManPostulantes = function (Cont) {
            var _parent = this;

            //Vemos si existe el estado del postulante
            if (_parent._ManPostulantes == null) {
                jQuery.getScript(URL_PAGE + "Scripts/app/administrador/ManPostulantes.js", function () {
                    _ManPostulantes.prototype = new Mantenimiento();
                    _parent._ManPostulantes = new _ManPostulantes();
                    _parent.InitManPostulantes(Cont);
                });
            } else {
                var _Urls = Urls;

                _Urls.List = URL_PAGE + "Shared/Catalogo/ListaDePostulante";
                _parent._ManPostulantes.VistaLista = "admision";

                _parent._ManPostulantes.EventoCambioConvocatoria = function (obj) {
                    var _parentManpostulante = this;
                    var contHerramientas = _parentManpostulante._getCont().find("#_OpcionesConvocatoria");
                    var option = obj.find("option[value='" + obj.val() + "']");
                    if (obj.val() != null) {
                        $.ajax({
                            url: URL_PAGE + "Shared/Administrador/MostrarOpcionesDeConvocatoria",
                            data: {
                                conv_codigo: obj.val(),
                                vista : "admision"
                            },
                            type: "post",
                            success: function (data) {
                                contHerramientas.html(data);
                                contHerramientas.slideDown();
                                _parent.CargarEventosOpcionesConvocatoria();
                            }
                        });
                    } else {
                        contHerramientas.slideUp();
                    }
                }

                _parent._ManPostulantes.Init(Cont, _Urls, "Modal");
                _parent.CargarEventosListaPostulante();
            }
        };

        this.CargarEventosOpcionesConvocatoria = function () {
            var _parent = this;
            var opciones = _parent._ManPostulantes._getCont("#_OpcionesConvocatoria");

            opciones.find("#_CargarResultados").click(function () {
                var obj = $(this);

                $.ajax({
                    url: URL_PAGE + "Administrador/Admision/CargarResultadosExamenAdmision",
                    data: { conv_codigo: obj.attr("data-conv_codigo") },
                    type: "post",
                    success: function (data) {
                        _parent._ManPostulantes._MensajesOperacion("success",
                                                    "Carga Exitosa",
                                                    "Se cargarón los resultados del examen de admisión");
                        _parent._ManPostulantes.__ListarTabla();
                    }
                });
            });



            opciones.off("click", "#_EntrevistasAdmision");
            opciones.on("click", "#_EntrevistasAdmision", function (event) {
                var obj = $(this);
                _parent._listarEntrevistasDeAdmision(obj.attr("data-conv_codigo"));
            });

        };

        this._listarEntrevistasDeAdmision = function (conv_codigo) {
            var _parent = this;

            //Ocultando la lista de los postulantes
            var layerEntrevistas = _parent._ManPostulantes._getCont().find("#_ListaEntrevistas");
            _parent._ManPostulantes._getContList().slideUp();
            $.ajax({
                type: "POST",
                //url: URL_PAGE + "Administrador/Calendario/ProgramarEntrevista",
                url: URL_PAGE + "Administrador/Admision/ListarEntrevistas",
                cache: false,
                data: { conv_codigo: conv_codigo },
                success: function (html) {
                    layerEntrevistas.html(html);
                    _parent.CargarEventosEntrevistas();
                }
            });
        }

        ///
        //Aqui se cargan las entrevistas de admision
        this.CargarEventosEntrevistas = function () {
            var _parent = this;
            var layerEntrevistas = _parent._ManPostulantes._getCont().find("#_ListaEntrevistas");



            //Enviar notificación entrevistador
            layerEntrevistas.off("click", ".enviar-mail-profesor");
            layerEntrevistas.on("click", ".enviar-mail-profesor", function (event) {
                var obj = $(this);

                var confirmacion = _parent._ManPostulantes._MensajeConfirmacion();
                confirmacion.titulo = "Desea enviar la notificación al entrevistador";
                confirmacion.contenido = "";
                confirmacion.yes = function () {
                    $.ajax({
                        url: URL_PAGE + "Administrador/Admision/EnviarNotificacionEntrevistador",
                        data: {
                            idprogramacionprofesor: obj.attr("data-idprogramacionprofesor")
                        },
                        type: "post",
                        success: function (html) {
                            _parent._ManPostulantes._MensajesOperacion("success",
                                                    "Se envió una notificación",
                                                    "Se envió la notificación al entrevistador");
                            _parent._listarEntrevistasDeAdmision(obj.attr("data-conv_codigo"));
                        }
                    });

                };
                confirmacion.modal();
            });

            //Enviar notificación al postulante
            layerEntrevistas.off("click", ".enviar-mail-postulante");
            layerEntrevistas.on("click", ".enviar-mail-postulante", function (event) {
                var obj = $(this);

                var confirmacion = _parent._ManPostulantes._MensajeConfirmacion();
                confirmacion.titulo = "Desea enviar la notificación al postulante";
                confirmacion.contenido = "";
                confirmacion.yes = function () {
                    $.ajax({
                        url: URL_PAGE + "Administrador/Admision/EnviarNotificacionPostulante",
                        data: {
                            idPostulanteEntrevista: obj.attr("data-idpostulanteentrevista")
                        },
                        type: "post",
                        success: function (html) {
                            _parent._ManPostulantes._MensajesOperacion("success",
                                                    "Se envió una notificación",
                                                    "Se envió la notificación al postulante");
                            _parent._listarEntrevistasDeAdmision(obj.attr("data-conv_codigo"));
                        }
                    });

                };
                confirmacion.modal();
            });

            


            //Asignacion de postulantes
            layerEntrevistas.off("change", ".asignar-entrevistar-postulante");
            layerEntrevistas.on("change", ".asignar-entrevistar-postulante", function (event) {
                var obj = $(this);

                var confirmacion = _parent._ManPostulantes._MensajeConfirmacion();
                confirmacion.titulo = "Desea registrar la entrevista";
                confirmacion.contenido = "";
                confirmacion.yes = function () {
                    $.ajax({
                        url: URL_PAGE + "Administrador/Admision/RegistrarEntrevista",
                        data: {
                            idpostulante: obj.val(),
                            idprogramacionprofesorsesion: obj.attr("data-idprogramacionprofesorsesion")
                        },
                        type: "post",
                        success: function (html) {
                            _parent._ManPostulantes._MensajesOperacion("success",
                                                    "Registro de la entrevista",
                                                    "El registro de la entrevista se realizó correctamente");
                            _parent._listarEntrevistasDeAdmision(obj.attr("data-conv_codigo"));
                        }
                    });

                };
                confirmacion.modal();
            });

            layerEntrevistas.off("click", ".eliminar-entrevista");
            layerEntrevistas.on("click", ".eliminar-entrevista", function (event) {
                var obj = $(this);

                var confirmacion = _parent._ManPostulantes._MensajeConfirmacion();
                confirmacion.titulo = "Desea eliminar la entrevista";
                confirmacion.contenido = "";
                confirmacion.yes = function () {
                    $.ajax({
                        url: URL_PAGE + "Administrador/Admision/EliminarEntrevista",
                        data: {
                            id: obj.attr("data-id")
                        },
                        type: "post",
                        success: function (html) {
                            _parent._ManPostulantes._MensajesOperacion("success",
                                                    "Eliminación de la entrevista",
                                                    "La eliminación de la entrevista se realizó correctamente");
                            _parent._listarEntrevistasDeAdmision(obj.attr("data-conv_codigo"));
                        }
                    });
                };
                confirmacion.modal();
            });

            layerEntrevistas.off("click", ".eliminar-programacion-sesion");
            layerEntrevistas.on("click", ".eliminar-programacion-sesion", function (event) {
                var obj = $(this);

                var confirmacion = _parent._ManPostulantes._MensajeConfirmacion();
                confirmacion.titulo = "Desea eliminar la programación de entrevista";
                confirmacion.contenido = "";
                confirmacion.yes = function () {
                    $.ajax({
                        url: URL_PAGE + "Administrador/Admision/EliminarProgramacionEntrevistadorSesion",
                        data: {
                            id: obj.attr("data-id")
                        },
                        type: "post",
                        success: function (html) {
                            _parent._ManPostulantes._MensajesOperacion("success",
                                                    "Eliminación de la programación de la entrevista",
                                                    "La eliminación de la programación entrevista se realizó correctamente");
                            _parent._listarEntrevistasDeAdmision(obj.attr("data-conv_codigo"));
                        }
                    });
                };
                confirmacion.modal();
            });

            layerEntrevistas.off("click", ".eliminar-programacion-entrevistador");
            layerEntrevistas.on("click", ".eliminar-programacion-entrevistador", function (event) {
                var obj = $(this);

                var confirmacion = _parent._ManPostulantes._MensajeConfirmacion();
                confirmacion.titulo = "Desea eliminar al entrevistador";
                confirmacion.contenido = "";
                confirmacion.yes = function () {
                    $.ajax({
                        url: URL_PAGE + "Administrador/Admision/EliminarProgramacionEntrevistador",
                        data: {
                            id: obj.attr("data-id")
                        },
                        type: "post",
                        success: function (html) {
                            _parent._ManPostulantes._MensajesOperacion("success",
                                                    "Eliminación del entrevistador",
                                                    "La eliminación del entrevistador se realizó correctamente");
                            _parent._listarEntrevistasDeAdmision(obj.attr("data-conv_codigo"));
                        }
                    });
                };
                confirmacion.modal();
            });


            layerEntrevistas.off("click", "#cerrar-lista-administrador");
            layerEntrevistas.on("click", "#cerrar-lista-administrador", function (event) {
                var layerEntrevistas = _parent._ManPostulantes._getCont().find("#_ListaEntrevistas");
                layerEntrevistas.slideUp();
                _parent._ManPostulantes._getContList().slideDown();
            });


            layerEntrevistas.off("click", "#nuevo-entrevistador");
            layerEntrevistas.on("click", "#nuevo-entrevistador", function (event) {
                var obj = $(this);

                $.ajax({
                    url: URL_PAGE + "Administrador/Admision/FormProgramacionEntrevistador",
                    data: { conv_codigo: obj.attr("data-conv_codigo") },
                    type: "post",
                    success: function (html) {
                        var modal = _parent._ManPostulantes._getModalV2();
                        modal.modal('show');
                        modal.find(".modal-body").html(html);
                        modal.find(".modal-header").find("h2").html("Programar entrevistador");

                        modal.css({
                            'top': "30%",
                            'width': '500px',
                            'margin-left': function () {
                                return -($(this).width() / 2);
                            }
                        });
                        //Obteniendo el formulario
                        form = modal.find("#FormProgramacionEntrevistador");

                        form.find('#pp_dia_programado').datepicker();
                        form.find('#pp_hora_incio').timepicker({
                            hours: { starts: 6, ends: 22 },
                            minutes: { interval: 30 },
                            rows: 3,
                            showPeriodLabels: true,
                            minuteText: 'Min'
                        });
                        form.find('#pp_hora_fin').timepicker({
                            hours: { starts: 6, ends: 22 },
                            minutes: { interval: 30 },
                            rows: 3,
                            showPeriodLabels: true,
                            minuteText: 'Min'
                        });

                        modal.find(".modal-footer").find("#aceptar").click(function () {
                            form.submit();
                        });

                        //Habilitando el formulario para el envio
                        form.validationEngine({
                            ajaxSubmit: true,
                            onValidationComplete: function (form1, status) {

                                if (status) {
                                    var confirmacion = _parent._ManPostulantes._MensajeConfirmacion();
                                    confirmacion.titulo = "Desea registrar al entrevistador";
                                    confirmacion.contenido = "";
                                    confirmacion.yes = function () {
                                        form.ajaxSubmit({
                                            success: function (responseText, statusText, xhr, $form) {
                                                _parent._ManPostulantes._MensajesOperacion("success",
                                                    "Registro de entrevistador",
                                                    "El registro del entrevistador se realizó correctamente");
                                                modal.modal('hide');

                                                _parent._listarEntrevistasDeAdmision(obj.attr("data-conv_codigo"));
                                            }
                                        });
                                    };
                                    confirmacion.modal();
                                }
                            }
                        });
                    }
                });
            });
        }


        this.CargarEventosListaPostulante = function () {
            var _parent = this;

            _parent._ManPostulantes._ContList.off("click", ".enviar-sarc");
            _parent._ManPostulantes._ContList.on("click", ".enviar-sarc", function (event) {
                event.preventDefault();
                var obj = $(this);
                $.ajax({
                    type: "POST",
                    url: URL_PAGE + "Administrador/Postulante/ExportarAlSARC",
                    cache: false,
                    data: { Clie_ID: obj.attr("data-Clie_ID") },
                    success: function (html) {
                    }
                });
            });

            //Evento para enviar a entrevista a los de comite
            _parent._ManPostulantes._ContList.off("click", ".enviar-a-entrevista");
            _parent._ManPostulantes._ContList.on("click", ".enviar-a-entrevista", function (event) {
                event.preventDefault();
                var obj = $(this);


                var confirmacion = _parent._ManPostulantes._MensajeConfirmacion();
                confirmacion.titulo = "Desea que pase una entrevista este postulante";
                confirmacion.contenido = "Una vez registrado no podrá modificarlo";
                confirmacion.yes = function () {
                    $.ajax({
                        type: "POST",
                        url: URL_PAGE + "Administrador/Admision/EnviarAEntrevistaAParticipante",
                        cache: false,
                        data: { IdPostulante: obj.attr("data-idpostulante"), PaseAEntrevistaManual: obj.attr("data-PaseAEntrevistaManual") },
                        success: function (html) {
                            _parent._ManPostulantes._MensajesOperacion("success",
                                                    "La operaci&oacute;n se realizo correctamente",
                                                    "El participante puede ahora pasar por una entrevista");
                            _parent._ManPostulantes.ListEspecial({ idregistro: obj.attr("data-idpostulante") });
                        }
                    });
                };
                confirmacion.modal();
            });

            

            _parent._ManPostulantes._ContList.off("click", ".ver-entrevistar-postulante");
            _parent._ManPostulantes._ContList.on("click", ".ver-entrevistar-postulante", function (event) {
                event.preventDefault();
                var obj = $(this);
                $.ajax({
                    type: "POST",
                    url: URL_PAGE + "Administrador/Entrevistador/FichaEntrevistaResumen",
                    cache: false,
                    data: { IdPostulanteEntrevista: obj.attr("data-idpostulanteentrevista") },
                    success: function (html) {
                        var modal = _parent._ManPostulantes._getModalV2();
                        modal.modal('show');

                        //modal.find(".modal-header").find("h4").html(" " + nombrePostulante);
                        modal.find(".modal-body").html(html);
                        modal.find(".modal-header").find("h2").html("Entrevista a: " + modal.find("#NombreCompleto").val());

                        modal.find(".modal-body").css({
                            overflow: 'auto',
                            'height': '400px',
                            'overflow-x': 'scroll'
                        });

                        modal.css({
                            width: '800px',
                            'margin-left': function () {
                                return -($(this).width() / 2);
                            }
                        });

                        //Enviando la ficha de entrevista
                        modal.find(".modal-footer").find("#aceptar").hide();
                    }
                });
            });

            _parent._ManPostulantes._ContList.off("click", ".examen-psicologico");
            _parent._ManPostulantes._ContList.on("click", ".examen-psicologico", function (event) {
                event.preventDefault();
                var obj = $(this);

                $.ajax({
                    url: URL_PAGE + "Administrador/Admision/FormExamenPsicologico",
                    data: { idpostulante: obj.attr("data-idpostulante") },
                    type: "post",
                    success: function (html) {
                        var modal = _parent._ManPostulantes._getModalV2();
                        modal.modal('show');
                        modal.find(".modal-body").html(html);
                        modal.find(".modal-header").find("h2").html("Registrar examen psicológico");

                        //Style del tipo de archivo
                        _parent._ManPostulantes.StyleInputFile2(modal.find(".modal-body").find("#archivo"));

                        //Obteniendo el formulario
                        form = modal.find("#FormCargaExamen");
                        modal.find(".modal-footer").find("#aceptar").click(function () {
                            form.submit();
                        });

                        //Habilitando el formulario para el envio
                        form.validationEngine({
                            ajaxSubmit: true,
                            onValidationComplete: function (form1, status) {

                                if (status) {
                                    var confirmacion = _parent._ManPostulantes._MensajeConfirmacion();
                                    confirmacion.titulo = "Desea registrar el examen psicológico";
                                    confirmacion.contenido = "Una vez registrado no podrá modificarlo";
                                    confirmacion.yes = function () {
                                        form.ajaxSubmit({
                                            success: function (responseText, statusText, xhr, $form) {
                                                _parent._ManPostulantes._MensajesOperacion("success",
                                                    "Examen psicológico registrado",
                                                    "El archivo y el resultado del examen psicológico fue registrado correctamente");
                                                modal.modal('hide');
                                                _parent._ManPostulantes.ListEspecial({ idregistro: obj.attr("data-idpostulante") });
                                            }
                                        });
                                    };
                                    confirmacion.modal();



                                }
                            }
                        });
                    }
                });
            });
        }
    };

    var page = new _PAGE();
    page.InitManPostulantes($("#_Postulante"));

});